Data source: https://www.data.gv.at/katalog/dataset/cda1b8eb-40ef-4229-9417-2ba29ea816dd#resources
import pandas as pd
import numpy as np
import matplotlib.pyplot as plt
import folium
from folium import plugins
import scipy
from folium.plugins import MarkerCluster
import seaborn as sns
data = pd.read_csv('data/FUNDPUNKTEOGD.csv')
data.head()
| FID | OBJECTID | SHAPE | BEZ | STRNAM | HNR | HNR_BIS | FUNDKATEGORIE | FUNDE | DATIERUNG | SE_ANNO_CAD_DATA | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | FUNDPUNKTEOGD.4168567 | 4168567 | POINT (16.544947490889246 48.222152588066905) | 22 | Eßling | NaN | NaN | Einzel-, Streufund | NaN | Urgeschichte/Mittelalter | NaN |
| 1 | FUNDPUNKTEOGD.4168568 | 4168568 | POINT (16.49679146205324 48.22667009446001) | 22 | Johann-Kutschera-Gasse | NaN | NaN | Einzel-, Streufund | NaN | Urgeschichte/Mittelalter/Neuzeit | NaN |
| 2 | FUNDPUNKTEOGD.4168569 | 4168569 | POINT (16.39428385131498 48.31212573845404) | 21 | Senderstraße | 40 | NaN | Siedlungsbefund | NaN | Urgeschichte/Paläolithikum | NaN |
| 3 | FUNDPUNKTEOGD.4168570 | 4168570 | POINT (16.371198668305727 48.25860255833461) | 20 | Am Brigittenauer Sporn | NaN | NaN | Einzel-, Streufund | NaN | Urgeschichte/Paläolithikum | NaN |
| 4 | FUNDPUNKTEOGD.4168571 | 4168571 | POINT (16.26137912267657 48.21509372593015) | 14 | Satzberg | NaN | NaN | Einzel-, Streufund | Keramik, Steingeräte, Hüttenlehm, Reibplatte | Urgeschichte | NaN |
data.isnull().sum()
FID 0 OBJECTID 0 SHAPE 0 BEZ 8 STRNAM 10 HNR 1004 HNR_BIS 2127 FUNDKATEGORIE 0 FUNDE 47 DATIERUNG 12 SE_ANNO_CAD_DATA 2500 dtype: int64
data.dtypes
FID object OBJECTID int64 SHAPE object BEZ object STRNAM object HNR object HNR_BIS object FUNDKATEGORIE object FUNDE object DATIERUNG object SE_ANNO_CAD_DATA float64 dtype: object
position_data = data.drop_duplicates(['OBJECTID'])
position_data.head()
| FID | OBJECTID | SHAPE | BEZ | STRNAM | HNR | HNR_BIS | FUNDKATEGORIE | FUNDE | DATIERUNG | SE_ANNO_CAD_DATA | |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 0 | FUNDPUNKTEOGD.4168567 | 4168567 | POINT (16.544947490889246 48.222152588066905) | 22 | Eßling | NaN | NaN | Einzel-, Streufund | NaN | Urgeschichte/Mittelalter | NaN |
| 1 | FUNDPUNKTEOGD.4168568 | 4168568 | POINT (16.49679146205324 48.22667009446001) | 22 | Johann-Kutschera-Gasse | NaN | NaN | Einzel-, Streufund | NaN | Urgeschichte/Mittelalter/Neuzeit | NaN |
| 2 | FUNDPUNKTEOGD.4168569 | 4168569 | POINT (16.39428385131498 48.31212573845404) | 21 | Senderstraße | 40 | NaN | Siedlungsbefund | NaN | Urgeschichte/Paläolithikum | NaN |
| 3 | FUNDPUNKTEOGD.4168570 | 4168570 | POINT (16.371198668305727 48.25860255833461) | 20 | Am Brigittenauer Sporn | NaN | NaN | Einzel-, Streufund | NaN | Urgeschichte/Paläolithikum | NaN |
| 4 | FUNDPUNKTEOGD.4168571 | 4168571 | POINT (16.26137912267657 48.21509372593015) | 14 | Satzberg | NaN | NaN | Einzel-, Streufund | Keramik, Steingeräte, Hüttenlehm, Reibplatte | Urgeschichte | NaN |
data['LATITUDE'] = data['SHAPE'].str.extract('(\s\d+.\d*)', expand=True)
data['LONGITUDE'] = data['SHAPE'].str.extract('(\d+.\d*)', expand=True)
def mean_position(data):
sum = 0.0
for i in data:
sum = sum + float(i)
mean = sum / len(data)
return mean
zoom = 12
record_map= folium.Map(location=[mean_position(data['LATITUDE']), mean_position(data['LONGITUDE'])], zoom_start=zoom, control_scale=True)
marker_cluster = MarkerCluster().add_to(record_map)
for i in range(len(data)):
lat = data['LATITUDE'].iloc[i]
long = data['LONGITUDE'].iloc[i]
name = data['FUNDKATEGORIE'].iloc[i]
radius=10
folium.CircleMarker(location = [lat, long], popup=str(name),radius=radius,fill =True, color='blue',fill_color='blue').add_to(marker_cluster)
record_map.add_child(folium.LatLngPopup())
minimap = plugins.MiniMap()
record_map.add_child(minimap)
record_map